package com.example.yxweather.storage


import android.content.Context
import android.content.SharedPreferences
import com.google.gson.Gson

/**
 * 实现单例模式
 * 1. 私有化构造函数，外部无法创建
 * 2. 提供getInstance方法，调用时判断是否已经存在实例化对象，存在直接返回，不存在创建并返回
 * */
class TokenPreferences private constructor(context: Context) {

    companion object {
        @Volatile
        private var instance: TokenPreferences? = null

        fun getInstance(context: Context): TokenPreferences {
            // 第一次检查：如果实例已存在直接同步返回
            return instance ?: synchronized(this) {
                // 第二次检查：确保只有一个实例被创建
                instance ?: TokenPreferences(context.applicationContext).also {
                    instance = it
                }
            }
        }
    }

    // 使用lazy委托延迟初始化SharedPreferences对象
    // 只有在第一次访问prefs时才会执行初始化代码，提高性能
    private val prefs: SharedPreferences by lazy {
        // 获取名为"token_prefs"的SharedPreferences文件
        // Context.MODE_PRIVATE表示该文件只能被当前应用访问
        context.getSharedPreferences("token_prefs", Context.MODE_PRIVATE)
    }


    private val gson = Gson()

    fun saveToken(token: String) {
        prefs.edit().apply {
            putString("token", token)
            apply() // 异步提交
        }
    }

    fun getToken(): String? {
        return prefs.getString("token", null)
    }

    fun clearToken() {
        prefs.edit().apply {
            remove("token")
            apply()
        }
    }
}

//export const tp =new TokenPreferences()